home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 March / EnigmA AMIGA RUN 05 (1996)(G.R. Edizioni)(IT)[!][issue 1996-03][Skylink CD IV].iso / earcd / program / isms.lha / isms.Bak / isms.amosSourceCode
AMOS Source Code  |  1995-10-24  |  5KB  |  163 lines

  1. '
  2. '   Intelligent Screen Manager System - ISMS V1.0 for AMOSPro  
  3. '    
  4. '   by Miroslaw Siedlarz (siedlarz@felix.univ.szczecin.pl
  5. '
  6. '   it is used in main program LIGA 2.0 which i upload shortly 
  7. '   to Aminet ( 'biz/dbase/Liga2.lha' )
  8.  
  9.  
  10. _NUM_SCR=10 : Rem   number of different pictures to be displayed   
  11. '                  each picture has different identification number (0-4)            
  12.  
  13. Dim _SCR(_NUM_SCR)
  14. Global _SCR(),_NUM_SCR
  15. Flash Off 
  16. Pen 3 : Paper 0
  17.  
  18. Do 
  19.    Locate 0,0 : Cls 0
  20.    
  21.    Print 
  22.    Print "      ID - picture identifier"
  23.    Print "PIC_NAME - name of the picture"
  24.    Print "   CALLS - number of calls to this picture"
  25.    Print "  SCREEN - number of amos screen on which picture is displayed   "
  26.    Print "           0 means that picture is not on any amos screen"
  27.    
  28.    Print 
  29.    Print "        ID      PIC_NAME   CALLS      SCREEN"
  30.    Print 
  31.    Print "         1        1.iff ",Str$(_SCR(1)/100),'','',Str$(_SCR(1) mod 100)
  32.    Print "         2        2.iff ",Str$(_SCR(2)/100),'','',Str$(_SCR(2) mod 100)
  33.    Print "         3        3.iff ",Str$(_SCR(3)/100),'','',Str$(_SCR(3) mod 100)
  34.    Print "         4        4.iff ",Str$(_SCR(4)/100),'','',Str$(_SCR(4) mod 100)
  35.    Print "         5        5.iff ",Str$(_SCR(5)/100),'','',Str$(_SCR(5) mod 100)
  36.    Print "         6        6.iff ",Str$(_SCR(6)/100),'','',Str$(_SCR(6) mod 100)
  37.    Print "         7        7.iff ",Str$(_SCR(7)/100),'','',Str$(_SCR(7) mod 100)
  38.    Print "         8        8.iff ",Str$(_SCR(8)/100),'','',Str$(_SCR(8) mod 100)
  39.    Print "         9        9.iff ",Str$(_SCR(9)/100),'','',Str$(_SCR(9) mod 100)
  40.    Print "        10       10.iff ",Str$(_SCR(10)/100),'','',Str$(_SCR(10) mod 100)
  41.    Print 
  42.    Input "          enter number of picture identifier you want to show  = ";NUM
  43.    
  44.    If NUM>0 and NUM<11
  45.       '
  46.       '  call procedure and move screen to the front of display
  47.       '
  48.       Proc _LOAD_SCREEN[NUM]
  49.       If Param=True
  50.          Screen To Front _SCR(NUM) mod 100
  51.       End If 
  52.       '
  53.       '
  54.       Repeat : Until Inkey$<>""
  55.       '      
  56.       '
  57.       Screen 0
  58.       Screen To Front 0
  59.       '
  60.       '
  61.       '
  62.    End If 
  63. Loop 
  64. '
  65. '
  66. '
  67. Procedure _LOAD_SCREEN[ID]
  68.    '
  69.    '   search for screen number with the highest number of calls  
  70.    '   that new opened screen or called screen will get this number 
  71.    '   increased by 1 
  72.    '
  73.    Change Mouse 5
  74.    For X=1 To _NUM_SCR
  75.       MX=Max(MX,_SCR(X)/100)
  76.    Next X
  77.    Inc MX
  78.    '
  79.    '    if picture (ID) is in mwmory then add one call to the table 
  80.    '
  81.    If _SCR(ID)>0
  82.       _SCR(ID)=MX*100+(_SCR(ID) mod 100)
  83.       Screen _SCR(ID) mod 100
  84.    Else 
  85.       '
  86.       '   if picture (ID) is not in memory then i try to fid 
  87.       '                                 empty screen 
  88.       '      
  89.       Do 
  90.          '
  91.          '   searching for empty screen 
  92.          '
  93.          For X=1 To 7
  94.             Trap Screen X
  95.             Exit If Errtrap
  96.          Next X
  97.          '
  98.          '   X=8 means that all screens are currently used (no empty screen)
  99.          '   so i must delete which has the smallest number of calls
  100.          '   in fact it is the most useless 
  101.          '   also i must delete that screen in case of low memory (e.g. <200kb) 
  102.          '          
  103.          If X=8 or Chip Free+Fast Free<200000
  104.             '
  105.             '   searching for lowest number of calls so it will be deleted 
  106.             '
  107.             For X=1 To _NUM_SCR
  108.                If _SCR(X)>0
  109.                   If MI=0
  110.                      MI=_SCR(X)/100
  111.                   Else 
  112.                      MI=Min(MI,_SCR(X)/100)
  113.                   End If 
  114.                End If 
  115.             Next X
  116.             '
  117.             '   searching for screen wich has number searched above  
  118.             '
  119.             For X=1 To _NUM_SCR
  120.                Exit If _SCR(X)/100=MI
  121.             Next X
  122.             '
  123.             '
  124.             '            
  125.             If _SCR(X) mod 100>0
  126.                Screen Close _SCR(X) mod 100
  127.                Screen 0
  128.                Print 
  129.                Print " in consequence of low memory or no empty screens"
  130.                Print " i must delete screen with the lowest number of calls"
  131.                Print "and this is screen number '"+Str$(_SCR(X) mod 100)
  132.                Print " press any key to continue"
  133.                Wait Key 
  134.                _SCR(X)=0
  135.             Else 
  136.                Change Mouse 4
  137.                Pop Proc[False]
  138.             End If 
  139.          Else 
  140.             Exit 
  141.          End If 
  142.       Loop 
  143.       '
  144.       '    loading picture on screen number X
  145.       '
  146.       If ID=1 : NAME_PIC$="1.IFF" : End If 
  147.       If ID=2 : NAME_PIC$="2.IFF" : End If 
  148.       If ID=3 : NAME_PIC$="3.IFF" : End If 
  149.       If ID=4 : NAME_PIC$="4.IFF" : End If 
  150.       If ID=5 : NAME_PIC$="5.IFF" : End If 
  151.       If ID=6 : NAME_PIC$="6.IFF" : End If 
  152.       If ID=7 : NAME_PIC$="7.IFF" : End If 
  153.       If ID=8 : NAME_PIC$="8.IFF" : End If 
  154.       If ID=9 : NAME_PIC$="9.IFF" : End If 
  155.       If ID=10 : NAME_PIC$="10.IFF" : End If 
  156.       '
  157.       Load Iff NAME_PIC$,X
  158.       Screen To Back X
  159.       _SCR(ID)=MX*100+X
  160.       
  161.    End If 
  162.    
  163. End Proc[True]